package com.lwt.codetop.twoPointers;
// 165. 比较版本号

/**
 * 思路：双指针 + 模拟
 *      以.为分界点拿到对位的数字，然后进行比较
 *      注意：两个串的长度可能不一样，对位没有的用0替代
 */
public class CompareVersionNumbers {
    public static void main(String[] args) {
        // 构建测试用例
        String v1 = "1.01",  v2 = "1.001";
        int res = compareVersion(v1, v2);
        System.out.println(res);

    }

    /**
     * 模拟：双指针比较版本号
     * @param v1
     * @param v2
     * @return
     */
    private static int compareVersion(String v1, String v2) {
        int n = v1.length(), m = v2.length();
        int i = 0, j = 0;
        while (i < n || j < m) {
            // 找出对位上的数字
            int a = i, b = j;
            while(a < n && v1.charAt(a) != '.') {
                a += 1;
            }
            while(b < m && v2.charAt(b) != '.') {
                b += 1;
            }
            int x = 0, y = 0;
            // 注意特判
            if(a == i) x = 0;
            else x = Integer.parseInt(v1.substring(i, a));
            if(b == j) y = 0;
            else y = Integer.parseInt(v2.substring(j, b));
            if(x < y) return -1;
            if(x > y) return 1;

            // 指针移动
            i = a + 1;
            j = b + 1;
        }

        return 0;
    }
}
